/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gpstracking.BL;

import com.gpstracking.BE.*;
import com.gpstracking.DA.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author jmj
 */
public class CondicionBL {
    
    
    public boolean registrarCondicionArea(String nombre, String descripcion,int idArea, String dentroFuera, List<Date> fechaInicio, List<Date> fechaFin, List<String> repite, Usuario usuario ){
    	try{
	        Condicion condicion = new Condicion();
	        condicion.setNombre(nombre);
	        condicion.setDescripcion(descripcion);
	        condicion.setUsuario(usuario);
	        
	        CondicionArea condicionArea = new CondicionArea();
	        condicionArea.setArea( AreaDA.get(idArea, usuario ) );
	        condicionArea.setCondicion(condicion);
	        condicionArea.setDentroFuera(dentroFuera);
	        
	        List<CondicionFechaHora> condicionesFechaHora = new ArrayList<CondicionFechaHora>();
	        for( int i = 0 ; i < fechaInicio.size(); i++){
	            CondicionFechaHora tmp =  new CondicionFechaHora();
	            tmp.setCondicionArea(condicionArea);
	            tmp.setFechaInicio(fechaInicio.get(i));
	            tmp.setFechaFin(fechaFin.get(i));
	            tmp.setRepite(repite.get(i));
	            condicionesFechaHora.add( tmp );
	        }
        
        
        
        	return CondicionDA.save( condicion, condicionArea, condicionesFechaHora);
    	}catch(Exception ex){
    		return false;
    		
    	}
    }
   
  
    
    public boolean registrarCondicionRuta(String nombre, String descripcion,int idRuta, List<Date> fechaInicio, List<Date> fechaFin, List<String> repite, Usuario usuario ){
    	try{
	        Condicion condicion = new Condicion();
	        condicion.setNombre(nombre);
	        condicion.setDescripcion(descripcion);
	        condicion.setUsuario(usuario);
	        
	        CondicionRuta condicionRuta = new CondicionRuta();
	        condicionRuta.setRuta( RutaDA.get(idRuta, usuario));
	        condicionRuta.setCondicion(condicion);
	
	        
	        List<CondicionFechaHora> condicionesFechaHora = new ArrayList<CondicionFechaHora>();
	        for( int i = 0 ; i < fechaInicio.size(); i++){
	            CondicionFechaHora tmp =  new CondicionFechaHora();
	            tmp.setCondicionRuta(condicionRuta);
	            tmp.setFechaInicio(fechaInicio.get(i));
	            tmp.setFechaFin(fechaFin.get(i));
	            tmp.setRepite(repite.get(i));
	            condicionesFechaHora.add( tmp );
	        }

        
        
        	return CondicionDA.save( condicion, condicionRuta, condicionesFechaHora);
    	}catch(Exception ex){
    		return false;
    		
    	}
    }
     
    
    
    public boolean registrarCondicionInmovilidad(String nombre, String descripcion,String minimoMaximo, int tiempo, List<Date> fechaInicio, List<Date> fechaFin, List<String> repite, Usuario usuario ){
    	try{
	        Condicion condicion = new Condicion();
	        condicion.setNombre(nombre);
	        condicion.setDescripcion(descripcion);
	        condicion.setUsuario(usuario);
	        
	        CondicionInmovilidad condicionInmovilidad = new CondicionInmovilidad();
	        condicionInmovilidad.setMinimoMaximo(minimoMaximo);
	        condicionInmovilidad.setTiempoInmovilidad(tiempo);
	        condicionInmovilidad.setCondicion(condicion);
	
	        
	        List<CondicionFechaHora> condicionesFechaHora = new ArrayList<CondicionFechaHora>();
	        for( int i = 0 ; i < fechaInicio.size(); i++){
	            CondicionFechaHora tmp =  new CondicionFechaHora();
	            tmp.setCondicionInmovilidad(condicionInmovilidad);
	            tmp.setFechaInicio(fechaInicio.get(i));
	            tmp.setFechaFin(fechaFin.get(i));
	            tmp.setRepite(repite.get(i));
	            condicionesFechaHora.add( tmp );
	        }
	        
	        return CondicionDA.save( condicion, condicionInmovilidad, condicionesFechaHora);
	        
    	}catch(Exception ex){
    		return false;
    		
    	}
    }
    
    
    public List<Condicion> getCondicionesActivas(Usuario usuario ){
    	return CondicionDA.getActivas(usuario);
    }
    
}
